package com.yonyou.gmmc.dealerApp.api.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;
import org.marketing.common.dto.customerInfo.EditCarinfoDto;
import org.marketing.common.dto.customerInfo.PotentialUser4AfterSaleDto;
import org.marketing.common.dto.customerInfo.PotentialUser4SaleDto;
import org.marketing.common.dto.customerInfo.PotentialUserDto;
import org.marketing.common.dto.customerInfo.PuserUserCarOwnerRelationDto;
import org.marketing.common.dto.customerInfo.PushHistoryDto;
import org.marketing.common.dto.search.DealerAppSearchDto;

import com.yonyou.gmmc.common.annotation.MySQLDb;
import com.yonyou.gmmc.common.annotation.OracleDb;
import com.yonyou.gmmc.dealerApp.api.entity.PuserOwnerRelationPO;
import com.yonyou.gmmc.dealerApp.api.entity.TlCarOwnerFollowRecodePO;
import com.yonyou.gmmc.dealerApp.api.entity.TlNormalFollowRecodePO;
import com.yonyou.gmmc.dealerApp.api.model.TmPotentialUser;
import tk.mybatis.mapper.common.Mapper;

//@MySQLDb
@OracleDb
public interface TmPotentialUserMapper extends Mapper<TmPotentialUser> {
	/**
    *
    * @author LiuJun
    * 潜在保存
    * @date 2016年11月10日
    * @param potentialUserPO
    */
    public void insertPotentialUser(TmPotentialUser potentialUserPO);
    
    /**
    *
    * @author LiuJun
    * 潜在用户更新
    * @date 2016年11月10日
    * @param potentialUserPO
    * @return
    */
    public long updatePotentialUser(TmPotentialUser potentialUserPO);
    
    
    /**
    *
    * @author LiuJun
    * 潜在用户更新-关注
    * @date 2017年1月10日
    * @param potentialUserPO
    * @return
    */
    public long updatePotentialUserForSubscribe(TmPotentialUser potentialUserPO);
    
    
    /**
    *
    * @author LiuJun
    * 根据设备号和来源查询潜在用户
    * @date 2016年11月10日
    * @param deviceOpenId
    * @param sourceType
    * @return
    */
    public TmPotentialUser queryPotentialUserByDeviceOpenId(@Param("deviceOpenId") String deviceOpenId,@Param("sourceType") Integer sourceType);

    /**
    *
    * @author LiuJun
    * 更新潜在用户状态
    * @date 2016年11月14日
    * @param openId
    * @param sourceType
    * @param status
    * @return
    */
    public long updatePotentialUserStatus(@Param("deviceOpenId") String openId, @Param("sourceType") Integer sourceType,@Param("status") Integer status);
    
    /**
     * 
    * 潜在客户信息取得
    * @author WangHuicheng
    * @date 2016年12月2日
    * @param dealerCode
    * @param salesConsultantId
    * @return
     */
    public List<PotentialUser4SaleDto> getPotentialUserList(DealerAppSearchDto dealerAppSearchDto);
    
    /**
     * 
    * 保存常规根据记录
    * @author WangHuicheng
    * @date 2016年12月4日
    * @param tlNormalFollowRecodePO
     */
    public void insertTlNormalFollowRecode(TlNormalFollowRecodePO tlNormalFollowRecodePO);
    
    /**
     * 
    * 车主保存常规根据记录
    * @author WangHuicheng
    * @date 2016年12月16日
    * @param tlCarOwnerFollowRecodePO
     */
    public void insertCarOwnerFollowRecode(TlCarOwnerFollowRecodePO tlCarOwnerFollowRecodePO);
    
    /**
     * 删除心仪车型
    *
    * @author WangHuicheng
    * @date 2016年12月4日
    * @param loveModelId
    * @return
     */
    public long deleteLoveModel(@Param("loveModelId") Long loveModelId);
    
    /**
     *  客户信息取得。
    *
    * @author WangHuicheng
    * @date 2016年12月5日
    * @param dealerAppSearchDto
    * @return
     */
    public List<PotentialUser4AfterSaleDto> getCustomerList(DealerAppSearchDto dealerAppSearchDto);
    
    /**
     * 
    * 保养到期信息抽取
    * @author WangHuicheng
    * @date 2016年12月8日
    * @param dealerAppSearchDto
    * @return
     */
    public List<PotentialUser4AfterSaleDto> getMaintainWarning(DealerAppSearchDto dealerAppSearchDto);
    
    /**
     * 
    * 保险到期信息抽取
    * @author WangHuicheng
    * @date 2016年12月8日
    * @param dealerAppSearchDto
    * @return
     */
    public List<PotentialUser4AfterSaleDto> getInsuranceWarning(DealerAppSearchDto dealerAppSearchDto);


    /**
     * 
    * 保存潜客和服务顾问关系
    * @author WangHuicheng
    * @date 2016年12月9日
    * @param puserOwnerRelationPO
    * @return
     */
    public long savePotentialSalesConsultant(PuserOwnerRelationPO puserOwnerRelationPO);
    
    /**
     * 
    * 
    * @author WangHuicheng
    * @date 2016年12月11日
    * @param dealerAppSearchDto
    * @return
     */
    public List<PotentialUser4AfterSaleDto> getNotBindAfterSales(DealerAppSearchDto dealerAppSearchDto);
    
    /**
     * 
    * 销售新增潜客检索
    * @author WangHuicheng
    * @date 2016年12月11日
    * @param dealerAppSearchDto
    * @return
     */
    public List<PotentialUser4SaleDto> getNotBindSales(DealerAppSearchDto dealerAppSearchDto);
    
    /**
     * 
    * 售后未绑定销售顾问的潜在客户保养预约提醒检索
    * @author WangHuicheng
    * @date 2016年12月13日
    * @param dealerAppSearchDto
    * @return
     */
    public List<PotentialUser4AfterSaleDto> getNotBindMaintainWarning(DealerAppSearchDto dealerAppSearchDto);
    
    /**
     * 
    * 售后未绑定销售顾问的潜在客户保险预约提醒检索
    * @author WangHuicheng
    * @date 2016年12月13日
    * @param dealerAppSearchDto
    * @return
     */
    public List<PotentialUser4AfterSaleDto> getNotBindInsuranceWarning(DealerAppSearchDto dealerAppSearchDto);
    
    
    /**
     * 
    * 根据车主ID取得潜客ID
    * @author WangHuicheng
    * @date 2016年12月14日
    * @param carOwnerUserId
    * @return
     */
    public List<PuserUserCarOwnerRelationDto>  getPuserUserCarOwnerRelation(@Param("carOwnerUserId") Long carOwnerUserId);

    /**
    *
    * @author LiuJun
    * 根据ID查询
    * @date 2016年12月20日
    * @param potentialUserId
    * @return
    */
    public TmPotentialUser queryPotentialUserById(@Param("potentialUserId") Long potentialUserId);

    
    /**
    * 个人中心信息查询
    * @author QianKun
    * @date 2016年12月21日
    * @param potentialUserId
    * @return
    */
    public List<PotentialUserDto> queryPersonalData(@Param("potentialUserId") Long potentialUserId);
    
    /**
    * 个人中心头像查询
    * @author QianKun
    * @date 2016年12月21日
    * @param potentialUserId
    * @return
    */
    public List<PotentialUserDto> queryPersonalPhoto(@Param("potentialUserId") Long potentialUserId);

    /**
    * 个人中心保险日期查询
    * @author QianKun
    * @date 2016年12月30日
    * @param vin
    * @return
    */
    public List<PotentialUserDto> queryInsureData(@Param("vin") String vin);
 
    /**
    * 个人中心保养日期查询
    * @author QianKun
    * @date 2016年12月30日
    * @param vin
    * @return
    */
    public List<PotentialUserDto> queryMTData(@Param("vin") String vin);

    /**
    * 爱车编辑页面查询
    * @author QianKun
    * @date 2017年1月12日
    * @param carId
    * @return
    */
    public List<EditCarinfoDto> queryCarInfoByCarId(@Param("carId") String carId);

    /**
    * 个人中心-我的消息列表查询
    * @author QianKun
    * @date 2017年1月16日
    * @param receiverId
    * @return
    */
    public List<PushHistoryDto> queryMyMessage(@Param("receiverId") String receiverId);


}